﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;

namespace DXW
{
    using SKG;
    using SKG.Extend;

    using WS.Bussiness;

    public partial class FrmUngvien : DXW.FrmInput
    {
        BussinessSoapClient _bllUngvien = new BussinessSoapClient();

        Guid Id = Guid.Empty;
        string TabActive = "tabUngvien";
        DataTable dtChuyenmon;
        DataTable dtHuanluyen;
        DataTable dtNgonngu;
        DataTable dtVitinh;
        DataTable dtKinhnghiem;
        DataTable dtThamchieu;
        DataTable dtPhongvan;

        public FrmUngvien()
        {
            InitializeComponent();
            _bllCat = new WS.Catalog.CatalogSoapClient();
            _bllBus = new WS.Bussiness.BussinessSoapClient();
        }

        #region LoadData OKI
        protected override void LoadData()
        {
            ResetInput();

            switch (TabActive)
            {
                case "tabChuyenmon":
                    LoadData_Chuyenmon();
                    break;

                case "tabHuanluyen":
                    LoadData_Huanluyen();
                    break;

                case "tabNgonngu":
                    LoadData_Ngonngu();
                    break;

                case "tabVitinh":
                    LoadData_Vitinh();
                    break;

                case "tabKinhnghiem":
                    LoadData_Kinhnghiem();
                    break;

                case "tabThamchieu":
                    LoadData_Thamchieu();
                    break;

                case "tabPhongvan":
                    LoadData_Phongvan();
                    break;

                case "tabUngvien":
                    LoadData_Ungvien();
                    break;
                case "tabKetqua":
                    break;
            }
            base.LoadData();
        }

        private void LoadData_Phongvan()
        {
            ClearDataBindings_Phongvan();
            Phongvan o = new Phongvan();
            if (cbxLoai.Text == "Phòng ban chuyên môn") o.Loai = "Phòng ban chuyên môn";
            else o.Loai = "Phòng quản lý nguồn nhân lực";
            o.Ungvien_Id=Id;
            dtPhongvan = _bllBus.Phongvan_Select_By_Ungvien_Id(o);
            if (dtPhongvan.Rows.Count > 0)
            {
                gcTieuchuan.DataSource = dtPhongvan;
                DataBinding_Phongvan();
            }
            else gcTieuchuan.DataSource = null;
        }

        private void LoadData_Thamchieu()
        {
            ClearDataBindings_Thamchieu();
            dtThamchieu = _bllBus.Thamchieu_Select_By_Ungvien_Id(Id);
            if (dtThamchieu.Rows.Count > 0)
            {
                gcThamchieu.DataSource = dtThamchieu;
                DataBinding_Thamchieu();
            }
            else gcThamchieu.DataSource = null;
        }

        private void LoadData_Kinhnghiem()
        {
            ClearDataBindings_Kinhnghiem();
            dtKinhnghiem = _bllBus.Kinhnghiem_Select_By_Ungvien_Id(Id);
            if (dtKinhnghiem.Rows.Count > 0)
            {
                gcKinhnghiem.DataSource = dtKinhnghiem;
                DataBinding_Kinhnghiem();
            }
            else gcKinhnghiem.DataSource = null;
        }

        private void LoadData_Vitinh()
        {
            ClearDataBindings_Vitinh();
            dtVitinh = _bllBus.Vitinh_Select_By_Ungvien_Id(Id);
            if (dtVitinh.Rows.Count > 0)
            {
                gcVitinh.DataSource = dtVitinh;
                DataBinding_Vitinh();
            }
            else gcVitinh.DataSource = null;
        }

        private void LoadData_Ngonngu()
        {
            ClearDataBindings_Ngonngu();
            dtNgonngu = _bllBus.Ngonngu_Select_By_Ungvien_Id(Id);
            if (dtNgonngu.Rows.Count > 0)
            {
                gcNgonngu.DataSource = dtNgonngu;
                DataBinding_Ngonngu();
            }
            else gcNgonngu.DataSource = null;
        }

        private void LoadData_Huanluyen()
        {
            ClearDataBindings_Huanluyen();
            dtHuanluyen = _bllBus.Huanluyen_Select_By_Ungvien_Id(Id);
            if (dtHuanluyen.Rows.Count > 0)
            {
                gcHuanluyen.DataSource = dtHuanluyen;
                DataBinding_Huanluyen();
            }
            else gcHuanluyen.DataSource = null;
        }

        private void LoadData_Chuyenmon()
        {
            ClearDataBindings_Chuyenmon();
            dtChuyenmon = _bllBus.Chuyenmon_Select_By_Ungvien_Id(Id);
            if (dtChuyenmon.Rows.Count > 0)
            {
                gcChuyenmon.DataSource = dtChuyenmon;
                DataBinding_Chuyenmon();
            }
            else gcChuyenmon.DataSource = null;
        }

        private void LoadData_Ungvien()
        {
            ClearDataBindings_Ungvien();
            _dtb = _bllBus.Ungvien_Select();
            if (_dtb.Rows.Count > 0)
            {
                gcUngvien.DataSource = _dtb;
                DataBinding_Ungvien();
            }
            else gcUngvien.DataSource = null;
        }
        #endregion

        #region PerformRefresh OKI
        protected override void PerformRefresh()
        {
            switch (TabActive)
            {
                case "tabChuyenmon":
                    LoadData_Chuyenmon();
                    break;

                case "tabHuanluyen":
                    LoadData_Huanluyen();
                    break;

                case "tabNgonngu":
                    LoadData_Ngonngu();
                    break;

                case "tabVitinh":
                    LoadData_Vitinh();
                    break;

                case "tabKinhnghiem":
                    LoadData_Kinhnghiem();
                    break;

                case "tabThamchieu":
                    LoadData_Thamchieu();
                    break;

                case "tabPhongvan":
                    LoadData_Phongvan();
                    break;

                case "tabUngvien":
                    LoadData_Ungvien();
                    break;
                case "tabKetqua":
                    //LoadData_Ungvien();
                    break;
            }

            ReadOnlyControl();

            base.PerformRefresh();
        }
        #endregion

        #region Add
        protected override void PerformAdd()
        {
            if (TabActive == "tabPhongvan")
            {
                var Sodong_Phongvan_Ungvien = _bllBus.Phongvan_CountRows_OfUngvien(Id);
                if (Sodong_Phongvan_Ungvien >= 22) { XtraMessageBox.Show("Ứng viên này đã được nhập kết quả phỏng vấn.\nBạn có thể click nút \"Sữa\" để thay đổi.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); return; }
                gcTieuchuan.DataSource = _bllBus.Phongvan_Select_TempTable();
            }

            if (TabActive != "tabKetqua") base.PerformAdd();

            if (TabActive == "tabUngvien") txtMa.Text = _bllUngvien.Ungvien_Layma();

            if (TabActive == "tabPhongvan") gcTieuchuan.Enabled = true;
        }

        #endregion

        #region Edit OKI, khỏi chia, all in one
        protected override void PerformEdit()
        {
            if (Id == Guid.Empty)
            {
                XtraMessageBox.Show(STR_CHOICE_E,
                    Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            base.PerformEdit();
        }
        #endregion

        #region PerformDelete OKI
        protected override void PerformDelete()
        {
            switch (TabActive)
            {
                case "tabChuyenmon":
                    Delete_Chuyenmon();
                    break;

                case "tabHuanluyen":
                    Delete_Huanluyen();
                    break;

                case "tabNgonngu":
                    Delete_Ngonngu();
                    break;

                case "tabVitinh":
                    Delete_Vitinh();
                    break;

                case "tabKinhnghiem":
                    Delete_Kinhnghiem();
                    break;

                case "tabThamchieu":
                    Delete_Thamchieu();
                    break;

                case "tabPhongvan":
                    Delete_Phongvan();
                    break;

                case "tabUngvien":
                    Delete_Ungvien();
                    break;
                default: //Trường hợp là tabKetqua thì ko thể xóa
                    break;
            }

            base.PerformDelete();
        }

        private void Delete_Phongvan()
        {

        }

        private void Delete_Thamchieu()
        {
            var tmpId = gvThamchieu.GetFocusedRowCellValue("Id");
            if (tmpId == null)
            {
                XtraMessageBox.Show(STR_CHOICE,
                    Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            //var text = gvThamchieu.GetFocusedRowCellValue("Thamchieu");
            var id = (Guid)tmpId;

            if (id == new Guid())
                XtraMessageBox.Show(STR_SELECT.ToUpper(), STR_DELETE.ToUpper(), MessageBoxButtons.OK, MessageBoxIcon.Information);
            else
            {
                var cfm = String.Format(STR_CONFIRM, "người quen này của ứng viên");//text);
                var oki = XtraMessageBox.Show(cfm.ToUpper(), STR_DELETE.ToUpper(), MessageBoxButtons.OKCancel);

                if (oki == DialogResult.OK)
                {
                    int Xoa_1_0 = _bllBus.Thamchieu_Delete(id).ToInt32();
                    if (Xoa_1_0 == 1) PerformRefresh();
                    else XtraMessageBox.Show(STR_UNDELETE.ToUpper(), STR_DELETE.ToUpper(),
                        MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
        }

        private void Delete_Kinhnghiem()
        {
            var tmpId = gvKinhnghiem.GetFocusedRowCellValue("Id");
            if (tmpId == null)
            {
                XtraMessageBox.Show(STR_CHOICE,
                    Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            var id = (Guid)tmpId;

            if (id == new Guid())
                XtraMessageBox.Show(STR_SELECT.ToUpper(), STR_DELETE.ToUpper(), MessageBoxButtons.OK, MessageBoxIcon.Information);
            else
            {
                var cfm = String.Format(STR_CONFIRM, "quá trình làm việc");//text);
                var oki = XtraMessageBox.Show(cfm.ToUpper(), STR_DELETE.ToUpper(), MessageBoxButtons.OKCancel);

                if (oki == DialogResult.OK)
                {
                    int Xoa_1_0 = _bllBus.Kinhnghiem_Delete(id).ToInt32();
                    if (Xoa_1_0 == 1) PerformRefresh();
                    else XtraMessageBox.Show(STR_UNDELETE.ToUpper(), STR_DELETE.ToUpper(),
                        MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
        }

        private void Delete_Vitinh()
        {
            var tmpId = gvVitinh.GetFocusedRowCellValue("Id");
            if (tmpId == null)
            {
                XtraMessageBox.Show(STR_CHOICE,
                    Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            var text = gvVitinh.GetFocusedRowCellValue("Vitinh");
            var id = (Guid)tmpId;

            if (id == new Guid())
                XtraMessageBox.Show(STR_SELECT.ToUpper(), STR_DELETE.ToUpper(), MessageBoxButtons.OK, MessageBoxIcon.Information);
            else
            {
                var cfm = String.Format(STR_CONFIRM, text);
                var oki = XtraMessageBox.Show(cfm.ToUpper(), STR_DELETE.ToUpper(), MessageBoxButtons.OKCancel);

                if (oki == DialogResult.OK)
                {
                    int Xoa_1_0 = _bllBus.Vitinh_Delete(id).ToInt32();
                    if (Xoa_1_0 == 1) PerformRefresh();
                    else XtraMessageBox.Show(STR_UNDELETE.ToUpper(), STR_DELETE.ToUpper(),
                        MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
        }

        private void Delete_Ngonngu()
        {
            var tmpId = gvNgonngu.GetFocusedRowCellValue("Id");
            if (tmpId == null)
            {
                XtraMessageBox.Show(STR_CHOICE,
                    Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            var text = gvNgonngu.GetFocusedRowCellValue("Ngonngu");
            var id = (Guid)tmpId;

            if (id == new Guid())
                XtraMessageBox.Show(STR_SELECT.ToUpper(), STR_DELETE.ToUpper(), MessageBoxButtons.OK, MessageBoxIcon.Information);
            else
            {
                var cfm = String.Format(STR_CONFIRM, text);
                var oki = XtraMessageBox.Show(cfm.ToUpper(), STR_DELETE.ToUpper(), MessageBoxButtons.OKCancel);

                if (oki == DialogResult.OK)
                {
                    int Xoa_1_0 = _bllBus.Ngonngu_Delete(id).ToInt32();
                    if (Xoa_1_0 == 1) PerformRefresh();
                    else XtraMessageBox.Show(STR_UNDELETE.ToUpper(), STR_DELETE.ToUpper(),
                        MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
        }

        private void Delete_Huanluyen()
        {
            var tmpId = gvHuanluyen.GetFocusedRowCellValue("Id");
            if (tmpId == null)
            {
                XtraMessageBox.Show(STR_CHOICE,
                    Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            var text = gvHuanluyen.GetFocusedRowCellValue("Chungchi");
            var id = (Guid)tmpId;

            if (id == new Guid())
                XtraMessageBox.Show(STR_SELECT.ToUpper(), STR_DELETE.ToUpper(), MessageBoxButtons.OK, MessageBoxIcon.Information);
            else
            {
                var cfm = String.Format(STR_CONFIRM, text);
                var oki = XtraMessageBox.Show(cfm.ToUpper(), STR_DELETE.ToUpper(), MessageBoxButtons.OKCancel);

                if (oki == DialogResult.OK)
                {
                    int Xoa_1_0 = _bllBus.Huanluyen_Delete(id).ToInt32();
                    if (Xoa_1_0 == 1) PerformRefresh();
                    else XtraMessageBox.Show(STR_UNDELETE.ToUpper(), STR_DELETE.ToUpper(),
                        MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
        }

        private void Delete_Chuyenmon()
        {
            var tmpId = gvChuyenmon.GetFocusedRowCellValue("Id");
            if (tmpId == null)
            {
                XtraMessageBox.Show(STR_CHOICE,
                    Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            var text = gvChuyenmon.GetFocusedRowCellValue("Bangcap");
            var id = (Guid)tmpId;

            if (id == new Guid())
                XtraMessageBox.Show(STR_SELECT.ToUpper(), STR_DELETE.ToUpper(),
                MessageBoxButtons.OK, MessageBoxIcon.Information);
            else
            {
                var cfm = String.Format(STR_CONFIRM, text);
                var oki = XtraMessageBox.Show(cfm.ToUpper(), STR_DELETE.ToUpper(), MessageBoxButtons.OKCancel);

                if (oki == DialogResult.OK)
                {
                    int Xoa_1_0 = _bllBus.Chuyenmon_Delete(id).ToInt32();
                    if (Xoa_1_0 == 1) PerformRefresh();
                    else XtraMessageBox.Show(STR_UNDELETE.ToUpper(), STR_DELETE.ToUpper(),
                        MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
        }

        private void Delete_Ungvien()
        {
            var tmpId = gvUngvien.GetFocusedRowCellValue("Id");
            if (tmpId == null)
            {
                XtraMessageBox.Show(STR_CHOICE,
                    Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            var text = gvUngvien.GetFocusedRowCellValue("Ten");
            var id = (Guid)tmpId;

            if (id == new Guid())
                XtraMessageBox.Show(STR_SELECT.ToUpper(), STR_DELETE.ToUpper(),
                MessageBoxButtons.OK, MessageBoxIcon.Information);
            else
            {
                var cfm = String.Format(STR_CONFIRM, text);
                var oki = XtraMessageBox.Show(cfm.ToUpper(), STR_DELETE.ToUpper(), MessageBoxButtons.OKCancel);

                if (oki == DialogResult.OK)
                {
                    int Xoa_1_0 = _bllUngvien.Ungvien_Delete(id).ToInt32();
                    if (Xoa_1_0 > 0) PerformRefresh();
                    else XtraMessageBox.Show(STR_UNDELETE.ToUpper(), STR_DELETE.ToUpper(),
                        MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
        }
        #endregion

        #region PerformSave OKI
        protected override void PerformSave()
        {
            switch (_state)
            {
                case State.Add:
                    if (InsertObject()) //Switch cho từng tab
                    {
                        XtraMessageBox.Show("Lưu thành công!", "Lưu", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    break;

                case State.Edit:
                    if (UpdateObject()) //Switch cho từng tab
                    {
                        XtraMessageBox.Show("Lưu thành công!", "Lưu", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    break;

                default:
                    break;
            }
            base.PerformSave();
        }
        #endregion

        #region UpdateObject OKI

        protected override bool UpdateObject()
        {
            switch (TabActive)
            {
                case "tabChuyenmon":
                    if (!ValidInput_Chuyenmon())
                    {
                        return false;
                    }
                    return UpdateObject_Chuyenmon();

                case "tabHuanluyen":
                    if (!ValidInput_Huanluyen())
                    {
                        return false;
                    }
                    return UpdateObject_Huanluyen();

                case "tabNgonngu":
                    if (!ValidInput_Ngonngu())
                    {
                        return false;
                    }
                    return UpdateObject_Ngonngu();

                case "tabVitinh":
                    if (!ValidInput_Vitinh())
                    {
                        return false;
                    }
                    return UpdateObject_Vitinh();

                case "tabKinhnghiem":
                    if (!ValidInput_Kinhnghiem())
                    {
                        return false;
                    }
                    return UpdateObject_Kinhnghiem();

                case "tabThamchieu":
                    if (!ValidInput_Thamchieu())
                    {
                        return false;
                    }
                    return UpdateObject_Thamchieu();

                case "tabPhongvan":
                    if (!ValidInput_Phongvan())
                    {
                        return false;
                    }
                    return UpdateObject_Phongvan();

                case "tabUngvien":
                    if (!ValidInput_Ungvien())
                    {
                        return false;
                    }
                    return UpdateObject_Ungvien();
                default:
                    if (!ValidInput_Ketqua())
                    {
                        return false;
                    }
                    return UpdateObject_Ketqua();
            }
        }

        private bool UpdateObject_Phongvan()
        {
            try
            {
                var TempId = gvTieuchuan.GetFocusedRowCellValue("Id").GetGuid();
                var o = new WS.Bussiness.Phongvan()
                {
                    
                };

                _bllBus.Phongvan_Update(o);
                //Xử lý sau khi sữa xong // cái này gom chung lên chổ updateobject luôn nha a
                ChangeStatus();
                LoadData();
                ReadOnlyControl();
                return true;
            }
            catch
            {
                XtraMessageBox.Show("Lổi đã xẩy ra mà chưa biết ^^(ngâm cú coi lổi gì đây)", "Lổi cập nhật", MessageBoxButtons.OK);
                return false;
            }
        }

        private bool UpdateObject_Thamchieu()
        {
            try
            {
                var TempId = gvThamchieu.GetFocusedRowCellValue("Id").GetGuid();
                if (TempId == Guid.Empty)
                {
                    XtraMessageBox.Show("Chưa chọn người quen của ứng viên", "Lổi cập nhật", MessageBoxButtons.OK);
                    return false;
                }
                var o = new WS.Bussiness.Thamchieu()
                {
                    Id = TempId,
                    Hoten = txtHoten.Text.ToUpperWords(),
                    Chucvu = txtChucvu.Text.ToUpperFirst(),
                    Quanhe_Id = lokQuanhe.GetColumnValue("Id").GetGuid(),
                    Lienhe = txtLienhe.Text.ToUpperWords()
                };

                _bllBus.Thamchieu_Update(o);
                //Xử lý sau khi sữa xong // cái này gom chung lên chổ updateobject luôn nha a
                ChangeStatus();
                LoadData();
                ReadOnlyControl();
                return true;
            }
            catch
            {
                XtraMessageBox.Show("Lổi đã xẩy ra mà chưa biết ^^(ngâm cú coi lổi gì đây)", "Lổi cập nhật", MessageBoxButtons.OK);
                return false;
            }
        }

        private bool UpdateObject_Kinhnghiem()
        {
            try
            {
                var TempId = gvKinhnghiem.GetFocusedRowCellValue("Id").GetGuid();
                if (TempId == Guid.Empty)
                {
                    XtraMessageBox.Show("Chưa chọn quá trình làm việc", "Lổi cập nhật", MessageBoxButtons.OK);
                    return false;
                }
                var o = new WS.Bussiness.Kinhnghiem()
                {
                    Id = TempId,
                    Ngaylam = dtpNgaylam.EditValue.ToDateTime(),
                    Ngaynghi = dtpNgaynghi.EditValue.ToDateTime(),
                    Ten_Congty = txtTen_Congty.Text.ToUpperWords(),
                    Vitri_Id = lokVitri_Kn.GetColumnValue("Id").GetGuid(),
                    Diachi = txtDiachi.Text.ToUpperWords(),
                    Nganhnghe_Kinhdoanh = txtNganhnghe_Kinhdoanh.Text.ToUpperFirst(),
                    Ten_Captren = txtTen_Captren.Text.ToUpperFirst(),
                    Nhiemvu = txtNhiemvu.Text.ToUpperFirst(),
                    Luong = calLuong.EditValue.ToInt32(),
                    Lydo = txtLydo.Text.ToUpperFirst()
                };

                _bllBus.Kinhnghiem_Update(o);
                //Xử lý sau khi sữa xong // cái này gom chung lên chổ updateobject luôn nha a
                ChangeStatus();
                LoadData();
                ReadOnlyControl();
                return true;
            }
            catch
            {
                XtraMessageBox.Show("Lổi đã xẩy ra mà chưa biết ^^(ngâm cú coi lổi gì đây)", "Lổi cập nhật", MessageBoxButtons.OK);
                return false;
            }
        }

        private bool UpdateObject_Vitinh()
        {
            try
            {
                var TempId = gvVitinh.GetFocusedRowCellValue("ID").GetGuid();
                if (TempId == Guid.Empty)
                {
                    XtraMessageBox.Show("Chưa chọn chứng chỉ tin học mà ứng viên biết", "Lổi cập nhật", MessageBoxButtons.OK);
                    return false;
                }
                var o = new WS.Bussiness.Vitinh()
                {
                    Id = TempId,
                    Trinhdo_Id = lokTrinhdo_Vt.GetColumnValue("Id").GetGuid(),
                    Vanbang_Id = lokVanbang_Vt.GetColumnValue("Id").GetGuid(),
                    Noicap = txtNoicap.Text.ToUpperWords(),
                    PhanmemKhac = txtPhanmemKhac.Text.ToUpperFirst()
                };
                _bllBus.Vitinh_Update(o);
                //Xử lý sau khi sữa xong // cái này gom chung lên chổ updateobject luôn nha a
                ChangeStatus();
                LoadData();
                ReadOnlyControl();
                return true;
            }
            catch
            {
                XtraMessageBox.Show("Lổi đã xẩy ra mà chưa biết ^^(ngâm cú coi lổi gì đây)", "Lổi cập nhật", MessageBoxButtons.OK);
                return false;
            }
        }

        private bool UpdateObject_Ngonngu()
        {
            try
            {
                var TempId = gvNgonngu.GetFocusedRowCellValue("ID").GetGuid();
                if (TempId == Guid.Empty)
                {
                    XtraMessageBox.Show("Chưa chọn ngôn ngữ", "Lổi cập nhật", MessageBoxButtons.OK);
                    return false;
                }
                var o = new WS.Bussiness.Ngonngu()
                {
                    Id = TempId,
                    Ngonngu_Id = lokNgonngu.GetColumnValue("Id").GetGuid(),
                    Trinhdo_Id = lokTrinhdo.GetColumnValue("Id").GetGuid(),
                    Vanbang_Id = lokVanbang.GetColumnValue("Id").GetGuid(),
                    Noicap = txtNoicap.Text.ToUpperWords(),
                    Kynang_Totnhat = txtKynang_Totnhat.Text.ToUpperFirst(),
                    Kynang_Traodoi = txtKynang_daodoi.Text.ToUpperFirst()
                };
                _bllBus.Ngonngu_Update(o);
                //Xử lý sau khi sữa xong // cái này gom chung lên chổ updateobject luôn nha a
                ChangeStatus();
                LoadData();
                ReadOnlyControl();
                return true;
            }
            catch
            {
                XtraMessageBox.Show("Lổi đã xẩy ra mà chưa biết ^^(ngâm cú coi lổi gì đây)", "Lổi cập nhật", MessageBoxButtons.OK);
                return false;
            }
        }

        private bool UpdateObject_Huanluyen()
        {
            try
            {
                var TempId = gvHuanluyen.GetFocusedRowCellValue("Id").GetGuid();
                if (TempId == Guid.Empty)
                {
                    XtraMessageBox.Show("Chưa chọn khóa huấn luyện", "Lổi cập nhật", MessageBoxButtons.OK);
                    return false;
                }
                var o = new WS.Bussiness.Huanluyen()
                {
                    Id = TempId,
                    Donvi = txtDonvi.Text.ToUpperWords(),
                    Ten_Khoahoc = txtTen_Khoahoc.Text.ToUpperFirst(),
                    Thoigian = txtThoigian_Huanluyen.Text.ToUpperFirst(),
                    Chungchi_Id = lokChungchi.GetColumnValue("Id").GetGuid()
                };
                _bllBus.Huanluyen_Update(o);
                //Xử lý sau khi sữa xong // cái này gom chung lên chổ updateobject luôn nha a
                ChangeStatus();
                LoadData();
                ReadOnlyControl();
                return true;
            }
            catch
            {
                XtraMessageBox.Show("Lổi đã xẩy ra mà chưa biết ^^(ngâm cú coi lổi gì đây)", "Lổi cập nhật", MessageBoxButtons.OK);
                return false;
            }
        }

        private bool UpdateObject_Chuyenmon()
        {
            try
            {
                var TempId = gvChuyenmon.GetFocusedRowCellValue("Id").GetGuid();
                if (TempId == Guid.Empty)
                {
                    XtraMessageBox.Show("Chưa chọn quá trình đào tạo", "Lổi cập nhật", MessageBoxButtons.OK);
                    return false;
                }
                var o = new WS.Bussiness.Chuyenmon()
                {
                    Id = TempId,
                    Truong_Id = lokTruong.GetColumnValue("Id").GetGuid(),
                    Chuyennganh_Id = lokChuyennganh.GetColumnValue("Id").GetGuid(),
                    Thoigian = txtThoigian.Text,
                    Bangcap_Id = lokBangcap.GetColumnValue("Id").GetGuid()
                };
                _bllBus.Chuyenmon_Update(o);
                //Xử lý sau khi sữa xong
                ChangeStatus();
                LoadData();
                ReadOnlyControl();
                return true;
            }
            catch
            {
                XtraMessageBox.Show("Lổi đã xẩy ra mà chưa biết ^^(ngâm cú coi lổi gì đây)", "Lổi cập nhật", MessageBoxButtons.OK);
                return false;
            }
        }

        private bool UpdateObject_Ungvien()
        {
            try
            {
                var TempId = gvUngvien.GetFocusedRowCellValue("Id").GetGuid();
                if (TempId == Guid.Empty)
                {
                    XtraMessageBox.Show("Chưa chọn ứng viên", "Lổi cập nhật", MessageBoxButtons.OK);
                    return false;
                }
                var o = new WS.Bussiness.Ungvien();
                o.Id = TempId;
                o.Ma = txtMa.Text;
                o.Vitri_Id = lokVitri.GetColumnValue("Id").GetGuid();
                o.Mucluong = calMucluong.EditValue.ToDecimal();
                o.Ngay_Lamviec = dtpNgay_Lamviec.DateTime;
                o.Muctieu = txtMuctieu.Text.ToUpperFirst();
                o.Ten = txtTen.Text.ToUpperWords();
                o.Ngaysinh = dtpNgaysinh.DateTime;
                o.Noisinh = txtNoisinh.Text.ToUpperWords();
                o.Gioitinh = radGioitinh.EditValue.ToBoolean();
                o.CMND = txtCMND.Text;
                o.Ngaycap = dtpNgaycap.DateTime;
                o.Noicap_Id = lokNoicap.GetColumnValue("Id").GetGuid();
                o.Quoctich_Id = lokQuoctich.GetColumnValue("Id").GetGuid();
                o.Diachi_Thuongtru = txtDiachi_Thuongtru.Text.ToUpperWords();
                o.Diachi_Lienhe = txtDiachi_lienhe.Text.ToUpperWords();
                o.Tel = txtTel.Text;
                o.HP = txtHP.Text;
                o.Email = txtEmail.Text;
                o.Chieucao = calChieucao.EditValue.ToDecimal();
                o.Cannang = calCannang.EditValue.ToDecimal();
                o.Honnhan = radHonnhan.EditValue.ToText();
                o.Sothich = meoSothich.Text.ToUpperFirst();
                o.Diemmanh = meoDiemmanh.Text.ToUpperFirst();
                o.Diemyeu = meoDiemyeu.Text.ToUpperFirst();

                o.Muctieu2 = txtMuctieu2.Text.ToUpperFirst();
                o.Cacbuoc = meoCacbuoc.Text.ToUpperFirst();
                o.Nhanviec = radNhanviec.EditValue.ToText();
                o.Lamviec = radLamviec.EditValue.ToText();
                o.Khong_Hailong = meoKhong_Hailong.Text.ToUpperFirst();
                o.Ba_Yeuto_Mongmuon = meoBa_Yeuto_Mongmuon.Text.ToUpperFirst();
                o.Lydo_Nopdon_Xinviec = meoLydo_Nopdon_Xinviec.Text.ToUpperFirst();
                string FullBiet_Thongtin = "";
                if (chkBan.Checked) FullBiet_Thongtin += "1";
                else FullBiet_Thongtin += "0";
                if (chkBao.Checked) FullBiet_Thongtin += "1";
                else FullBiet_Thongtin += "0";
                if (chkWeb.Checked) FullBiet_Thongtin += "1";
                else FullBiet_Thongtin += "0";

                o.Biet_Thongtin = FullBiet_Thongtin + meoBiet_Thongtin.Text.ToUpperFirst();

                var a = _bllUngvien.Ungvien_Update(o);
                //Sử lý sau khi cập nhật ===> ko thể gọp chung khúc này vô UpdateObject :(
                ChangeStatus();
                LoadData();
                ReadOnlyControl();
                return true;
            }
            catch
            {
                XtraMessageBox.Show("Lổi đã xẩy ra mà chưa biết ^^(ngâm cú coi lổi gì đây)", "Lổi cập nhật", MessageBoxButtons.OK);
                return false;
            }
        }

        private bool UpdateObject_Ketqua()
        {
            try
            {
                var TempId = gvUngvien.GetFocusedRowCellValue("Id").GetGuid();
                if (TempId == Guid.Empty)
                {
                    XtraMessageBox.Show("Chưa chọn ứng viên", "Lổi cập nhật", MessageBoxButtons.OK);
                    return false;
                }
                var o = new WS.Bussiness.Ungvien();
                o.Id = TempId;
                o.Chuyenmon = calChuyenmon.EditValue.ToDecimal();
                o.Vitinh = calVitinh.EditValue.ToDecimal();
                o.Anhvan = calAnhvan.EditValue.ToDecimal();
                o.Khac = calKhac.EditValue.ToDecimal();
                o.NgayKiemtra = dtpNgay_Kiemtra.EditValue.ToDateTime();
                o.Ketqua = radKetqua.EditValue.ToString();
                o.Hopdong = radHopdong.EditValue.ToBoolean();
                o.Luong = calLuong_Pd.EditValue.ToDecimal();
                o.Ngaygoi = dtpNgaygoi.EditValue.ToDateTime();
                o.Ngay_Pheduyet = dtpNgay_Pheduyet.EditValue.ToDateTime();
                o.Hoten_Giamdoc = txtHoten_Giamdoc.Text.ToUpperWords();
                o.Chuky_Giamdoc = txtChuky_Giamdoc.Text.ToUpperFirst();

                var a = _bllUngvien.Ungvien_Update_Ketqua(o);
                //Sử lý sau khi cập nhật ===> ko thể gọp chung khúc này vô UpdateObject :(
                ChangeStatus();
                LoadData_Ungvien();
                ReadOnlyControl();
                return true;
            }
            catch
            {
                XtraMessageBox.Show("Lổi đã xẩy ra mà chưa biết ^^(ngâm cú coi lổi gì đây)", "Lổi cập nhật", MessageBoxButtons.OK);
                return false;
            }
        }
        #endregion

        #region InsertObject OKI
        protected override bool InsertObject()
        {
            switch (TabActive)
            {
                case "tabChuyenmon":
                    if (!ValidInput_Chuyenmon())
                    {
                        return false;
                    }
                    return InsertObject_Chuyenmon();

                case "tabHuanluyen":
                    if (!ValidInput_Huanluyen())
                    {
                        return false;
                    }
                    return InsertObject_Huanluyen();

                case "tabNgonngu":
                    if (!ValidInput_Ngonngu())
                    {
                        return false;
                    }
                    return InsertObject_Ngonngu();

                case "tabVitinh":
                    if (!ValidInput_Vitinh())
                    {
                        return false;
                    }
                    return InsertObject_Vitinh();

                case "tabKinhnghiem":
                    if (!ValidInput_Kinhnghiem())
                    {
                        return false;
                    }
                    return InsertObject_Kinhnghiem();

                case "tabThamchieu":
                    if (!ValidInput_Thamchieu())
                    {
                        return false;
                    }
                    return InsertObject_Thamchieu();

                case "tabPhongvan":
                    if (!ValidInput_Phongvan())
                    {
                        return false;
                    }
                    return InsertObject_Phongvan();

                case "tabUngvien":
                    if (!ValidInput_Ungvien()) 
                    {
                        return false;
                    }
                    return InsertObject_Ungvien();
                default:  //TabKetqua ko thể thêm, nó là 1 phần của Ungvien
                    return false;
            }
        }

        private bool InsertObject_Phongvan()
        {
            try
            {
                var Sodong_Phongvan_Ungvien = _bllBus.Phongvan_CountRows_OfUngvien(Id);
                if (Sodong_Phongvan_Ungvien >= 22) { XtraMessageBox.Show("Ứng viên này đã được nhập kết quả phỏng vấn.\nBạn có thể click nút \"Sữa\" để thay đổi.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); return false; }
                for (int i = 0; i < 11; i++)
                {
                    Phongvan o = new Phongvan();
                    o.Id = Guid.NewGuid();
                    o.Ungvien_Id = Id;
                    o.Tieuchuan_Id = gvTieuchuan.GetDataRow(i)["Id"].GetGuid();
                    o.Cot1 = gvTieuchuan.GetDataRow(i)["Cot1"].ToDecimal();
                    o.Cot2 = gvTieuchuan.GetDataRow(i)["Cot2"].ToDecimal();
                    o.Cot3 = gvTieuchuan.GetDataRow(i)["Cot3"].ToDecimal();
                    o.Cot4 = gvTieuchuan.GetDataRow(i)["Cot4"].ToDecimal();
                    o.Cot5 = gvTieuchuan.GetDataRow(i)["Cot5"].ToDecimal();
                    o.Nhanxet = meoNhanxet.Text.ToUpperFirst();
                    o.Ketluan = radKetluan.EditValue.ToString();
                    o.Loai = cbxLoai.Text;
                    o.Nguoi_Phongvan = txtNguoi_Phongvan.Text.ToUpperWords();
                    o.Vitri_Id = lokVitri_Pv.EditValue.GetGuid();
                    o.Bophan_Id = lokBophan_Pv.EditValue.GetGuid();
                    o.Ngay_Phongvan = dtpNgay_Phongvan.EditValue.ToDateTime();
                    _bllBus.Phongvan_Insert(o);
                }
                LoadData();
                ResetInput();
                return true;
            }
            catch { return false; }
        }

        private bool InsertObject_Thamchieu()
        {
            try
            {
                var o = new WS.Bussiness.Thamchieu()
                {
                    Id = Guid.NewGuid(),
                    Ungvien_Id = Id,
                    Hoten = txtHoten.Text.ToUpperWords(),
                    Chucvu = txtChucvu.Text.ToUpperFirst(),
                    Quanhe_Id = lokQuanhe.GetColumnValue("Id").GetGuid(),
                    Lienhe = txtLienhe.Text.ToUpperWords()
                };
                _bllBus.Thamchieu_Insert(o);
                //Sử lý sau khi insert
                LoadData();
                ResetInput();
                return true;
            }
            catch { return false; }
        }

        private bool InsertObject_Kinhnghiem()
        {
            try
            {
                var o = new WS.Bussiness.Kinhnghiem()
                {
                    Id = Guid.NewGuid(),
                    Ungvien_Id = Id,
                    Ngaylam = dtpNgaylam.EditValue.ToDateTime(),
                    Ngaynghi = dtpNgaynghi.EditValue.ToDateTime(),
                    Ten_Congty = txtTen_Congty.Text.ToUpperWords(),
                    Vitri_Id = lokVitri_Kn.GetColumnValue("Id").GetGuid(),
                    Diachi = txtDiachi.Text.ToUpperWords(),
                    Nganhnghe_Kinhdoanh = txtNganhnghe_Kinhdoanh.Text.ToUpperFirst(),
                    Ten_Captren = txtTen_Captren.Text.ToUpperFirst(),
                    Nhiemvu = txtNhiemvu.Text.ToUpperFirst(),
                    Luong = calLuong.EditValue.ToInt32(),
                    Lydo = txtLydo.Text.ToUpperFirst()
                };
                _bllBus.Kinhnghiem_Insert(o);
                //Sử lý sau khi insert
                LoadData();
                ResetInput();
                return true;
            }
            catch { return false; }
        }

        private bool InsertObject_Vitinh()
        {
            try
            {
                var o = new WS.Bussiness.Vitinh()
                {
                    Id = Guid.NewGuid(),
                    Ungvien_Id = Id,
                    Trinhdo_Id = lokTrinhdo_Vt.GetColumnValue("Id").GetGuid(),
                    Vanbang_Id = lokVanbang_Vt.GetColumnValue("Id").GetGuid(),
                    Noicap = txtNoicap_Vt.Text.ToUpperWords(),
                    PhanmemKhac = txtPhanmemKhac.Text.ToUpperFirst()
                };
                _bllBus.Vitinh_Insert(o);
                //Sử lý sau khi insert
                LoadData();
                ResetInput();
                return true;
            }
            catch { return false; }
        }

        private bool InsertObject_Ngonngu()
        {
            try
            {
                var o = new WS.Bussiness.Ngonngu()
                {
                    Id = Guid.NewGuid(),
                    Ungvien_Id = Id,
                    Ngonngu_Id = lokNgonngu.GetColumnValue("Id").GetGuid(),
                    Trinhdo_Id = lokTrinhdo.GetColumnValue("Id").GetGuid(),
                    Vanbang_Id = lokVanbang.GetColumnValue("Id").GetGuid(),
                    Noicap = txtNoicap.Text.ToUpperWords(),
                    Kynang_Totnhat = txtKynang_Totnhat.Text.ToUpperFirst(),
                    Kynang_Traodoi = txtKynang_daodoi.Text.ToUpperFirst()
                };
                _bllBus.Ngonngu_Insert(o);
                //Sử lý sau khi insert
                LoadData();
                ResetInput();
                return true;
            }
            catch { return false; }
        }

        private bool InsertObject_Huanluyen()
        {
            try
            {
                var o = new WS.Bussiness.Huanluyen();
                o.Id = Guid.NewGuid();
                o.Ungvien_Id = Id;
                o.Donvi = txtDonvi.Text.ToUpperWords();
                o.Ten_Khoahoc = txtTen_Khoahoc.Text.ToUpperFirst();
                o.Thoigian = txtThoigian_Huanluyen.Text.ToUpperFirst();
                o.Chungchi_Id = lokChungchi.GetColumnValue("Id").GetGuid();

                _bllBus.Huanluyen_Insert(o);
                //Sử lý sau khi insert
                LoadData();
                ResetInput();
                return true;
            }
            catch { return false; }
        }

        private bool InsertObject_Chuyenmon()
        {
            try
            {
                var o = new WS.Bussiness.Chuyenmon();
                o.Id = Guid.NewGuid();
                o.Ungvien_Id = Id;
                o.Truong_Id = lokTruong.GetColumnValue("Id").GetGuid();
                o.Chuyennganh_Id = lokChuyennganh.GetColumnValue("Id").GetGuid();
                o.Thoigian = txtThoigian.Text;
                o.Bangcap_Id = lokBangcap.GetColumnValue("Id").GetGuid();

                _bllBus.Chuyenmon_Insert(o);
                //Sử lý sau khi insert
                LoadData();
                ResetInput();
                return true;
            }
            catch { return false; }
        }

        private bool InsertObject_Ungvien()
        {
            try
            {
                var o = new WS.Bussiness.Ungvien();
                o.Id = Guid.NewGuid();
                o.Ma = txtMa.Text;
                o.Vitri_Id = lokVitri.GetColumnValue("Id").GetGuid();
                o.Mucluong = calMucluong.EditValue.ToDecimal();
                o.Ngay_Lamviec = dtpNgay_Lamviec.DateTime;
                o.Muctieu = txtMuctieu.Text.ToUpperFirst();
                o.Ten = txtTen.Text.ToUpperWords();
                o.Ngaysinh = dtpNgaysinh.DateTime;
                o.Noisinh = txtNoisinh.Text.ToUpperWords();
                o.Gioitinh = radGioitinh.EditValue.ToBoolean();
                o.CMND = txtCMND.Text;
                o.Ngaycap = dtpNgaycap.DateTime;
                o.Noicap_Id = lokNoicap.GetColumnValue("Id").GetGuid();
                o.Quoctich_Id = lokQuoctich.GetColumnValue("Id").GetGuid();
                o.Diachi_Thuongtru = txtDiachi_Thuongtru.Text.ToUpperWords();
                o.Diachi_Lienhe = txtDiachi_lienhe.Text.ToUpperWords();
                o.Tel = txtTel.Text;
                o.HP = txtHP.Text;
                o.Email = txtEmail.Text;
                o.Chieucao = calChieucao.EditValue.ToDecimal();
                o.Cannang = calCannang.EditValue.ToDecimal();
                o.Honnhan = radHonnhan.EditValue.ToText();
                o.Sothich = meoSothich.Text.ToUpperFirst();
                o.Diemmanh = meoDiemmanh.Text.ToUpperFirst();
                o.Diemyeu = meoDiemyeu.Text.ToUpperFirst();
                o.Muctieu2 = txtMuctieu2.Text.ToUpperFirst();
                o.Cacbuoc = meoCacbuoc.Text.ToUpperFirst();
                o.Nhanviec = radNhanviec.EditValue.ToText();
                o.Lamviec = radLamviec.EditValue.ToText();
                o.Khong_Hailong = meoKhong_Hailong.Text.ToUpperFirst();
                o.Ba_Yeuto_Mongmuon = meoBa_Yeuto_Mongmuon.Text.ToUpperFirst();
                o.Lydo_Nopdon_Xinviec = meoLydo_Nopdon_Xinviec.Text.ToUpperFirst();
                string FullBiet_Thongtin = "";
                if (chkBan.Checked)
                {
                    FullBiet_Thongtin += "1";
                }
                else FullBiet_Thongtin += "0";

                if (chkBao.Checked)
                {
                    FullBiet_Thongtin += "1";
                }
                else FullBiet_Thongtin += "0";

                if (chkWeb.Checked)
                {
                    FullBiet_Thongtin += "1";
                }
                else FullBiet_Thongtin += "0";

                o.Biet_Thongtin = FullBiet_Thongtin + meoBiet_Thongtin.Text.ToUpperFirst();

                var a = _bllUngvien.Ungvien_Insert(o);
                //Sử lý sau khi chuyện đã rồi ^^
                LoadData();
                ResetInput();
                txtMa.Text = _bllBus.Ungvien_Layma();
                return true;
            }
            catch { return false; }
        }
        #endregion

        #region ClearDataBindings OKI
        protected override void ClearDataBindings()
        {
            switch (TabActive)
            {
                case "tabChuyenmon":
                    ClearDataBindings_Chuyenmon();
                    break;

                case "tabHuanluyen":
                    ClearDataBindings_Huanluyen();
                    break;

                case "tabNgonngu":
                    ClearDataBindings_Ngonngu();
                    break;

                case "tabVitinh":
                    ClearDataBindings_Vitinh();
                    break;

                case "tabKinhnghiem":
                    ClearDataBindings_Kinhnghiem();
                    break;

                case "tabThamchieu":
                    ClearDataBindings_Thamchieu();
                    break;

                case "tabPhongvan":
                    ClearDataBindings_Phongvan();
                    break;

                case "tabUngvien":
                    ClearDataBindings_Ungvien();
                    break;
                case "tabKetqua":
                    ClearDataBindings_Ungvien();
                    break;
            }
            base.ClearDataBindings();
        }

        private void ClearDataBindings_Phongvan()
        {
            cbxLoai.DataBindings.Clear();
            txtNguoi_Phongvan.DataBindings.Clear();
            lokVitri_Pv.DataBindings.Clear();
            lokBophan_Pv.DataBindings.Clear();
            meoNhanxet.DataBindings.Clear();
            radKetluan.DataBindings.Clear();

            gcTieuchuan.DataSource = null;
        }

        private void ClearDataBindings_Thamchieu()
        {
            txtHoten.DataBindings.Clear();
            txtChucvu.DataBindings.Clear();
            lokQuanhe.DataBindings.Clear();
            txtLienhe.DataBindings.Clear();
        }

        private void ClearDataBindings_Kinhnghiem()
        {
            dtpNgaylam.DataBindings.Clear();
            dtpNgaynghi.DataBindings.Clear();
            txtTen_Congty.DataBindings.Clear();
            lokVitri_Kn.DataBindings.Clear();
            txtDiachi.DataBindings.Clear();
            txtNganhnghe_Kinhdoanh.DataBindings.Clear();
            txtTen_Captren.DataBindings.Clear();
            txtNhiemvu.DataBindings.Clear();
            calLuong.DataBindings.Clear();
            txtLydo.DataBindings.Clear();
        }

        private void ClearDataBindings_Vitinh()
        {
            lokTrinhdo_Vt.DataBindings.Clear();
            lokVanbang_Vt.DataBindings.Clear();
            txtNoicap_Vt.DataBindings.Clear();
            txtPhanmemKhac.DataBindings.Clear();
        }

        private void ClearDataBindings_Ngonngu()
        {
            lokNgonngu.DataBindings.Clear();
            lokTrinhdo.DataBindings.Clear();
            lokVanbang.DataBindings.Clear();
            txtNoicap.DataBindings.Clear();
            txtKynang_Totnhat.DataBindings.Clear();
            txtKynang_daodoi.DataBindings.Clear();
        }

        private void ClearDataBindings_Huanluyen()
        {
            txtDonvi.DataBindings.Clear();
            txtTen_Khoahoc.DataBindings.Clear();
            txtThoigian_Huanluyen.DataBindings.Clear();
            lokChungchi.DataBindings.Clear();
        }

        private void ClearDataBindings_Chuyenmon()
        {
            lokTruong.DataBindings.Clear();
            lokChuyennganh.DataBindings.Clear();
            txtThoigian.DataBindings.Clear();
            lokBangcap.DataBindings.Clear();
        }

        private void ClearDataBindings_Ungvien()
        {
            txtMa.DataBindings.Clear();
            lokVitri.DataBindings.Clear();
            calMucluong.DataBindings.Clear();
            dtpNgay_Lamviec.DataBindings.Clear();
            txtMuctieu.DataBindings.Clear();
            txtTen.DataBindings.Clear();
            dtpNgaysinh.DataBindings.Clear();
            txtNoisinh.DataBindings.Clear();
            radGioitinh.DataBindings.Clear();
            txtCMND.DataBindings.Clear();
            dtpNgaycap.DataBindings.Clear();
            lokNoicap.DataBindings.Clear();
            lokQuoctich.DataBindings.Clear();
            txtDiachi_lienhe.DataBindings.Clear();
            txtDiachi_Thuongtru.DataBindings.Clear();
            txtTel.DataBindings.Clear();
            txtHP.DataBindings.Clear();
            txtEmail.DataBindings.Clear();
            calChieucao.DataBindings.Clear();
            calCannang.DataBindings.Clear();
            radHonnhan.DataBindings.Clear();
            meoSothich.DataBindings.Clear();
            meoDiemmanh.DataBindings.Clear();
            meoDiemyeu.DataBindings.Clear();
            txtMuctieu2.DataBindings.Clear();
            meoCacbuoc.DataBindings.Clear();
            radNhanviec.DataBindings.Clear();
            radLamviec.DataBindings.Clear();
            meoKhong_Hailong.DataBindings.Clear();
            meoBa_Yeuto_Mongmuon.DataBindings.Clear();
            meoLydo_Nopdon_Xinviec.DataBindings.Clear();

            //Kết quả test
            calChuyenmon.DataBindings.Clear();
            calVitinh.DataBindings.Clear();
            calAnhvan.DataBindings.Clear();
            calKhac.DataBindings.Clear();
            dtpNgay_Kiemtra.DataBindings.Clear();

            //Phê duyệt
            dtpNgay_Pheduyet.DataBindings.Clear();
            radKetqua.DataBindings.Clear();
            radHopdong.DataBindings.Clear();
            calLuong_Pd.DataBindings.Clear();
            dtpNgaygoi.DataBindings.Clear();
            txtHoten_Giamdoc.DataBindings.Clear();
            txtChuky_Giamdoc.DataBindings.Clear();
        }
        #endregion

        #region DataBindingControl OKI
        protected override void DataBindingControl()
        {
            switch (TabActive)
            {
                case "tabChuyenmon":
                    DataBinding_Chuyenmon();
                    break;

                case "tabHuanluyen":
                    DataBinding_Huanluyen();
                    break;

                case "tabNgonngu":
                    DataBinding_Ngonngu();
                    break;

                case "tabVitinh":
                    DataBinding_Vitinh();
                    break;

                case "tabKinhnghiem":
                    DataBinding_Kinhnghiem();
                    break;

                case "tabThamchieu":
                    DataBinding_Thamchieu();
                    break;

                case "tabPhongvan":
                    DataBinding_Phongvan();
                    break;

                case "tabUngvien":
                    DataBinding_Ungvien();
                    break;
                case "tabKetqua":
                    DataBinding_Ungvien();
                    break;
            }
            base.DataBindingControl();
        }

        private void DataBinding_Phongvan()
        {
            cbxLoai.DataBindings.Add("EditValue", dtPhongvan, ".Loai");
            txtNguoi_Phongvan.DataBindings.Add("EditValue", dtPhongvan, ".Nguoi_Phongvan");
            lokVitri_Pv.DataBindings.Add("EditValue", dtPhongvan, ".Vitri_Id");
            lokBophan_Pv.DataBindings.Add("EditValue", dtPhongvan, ".Bophan_Id");
            meoNhanxet.DataBindings.Add("EditValue", dtPhongvan, ".Nhanxet");
            radKetluan.DataBindings.Add("EditValue", dtPhongvan, ".Ketluan");
        }

        private void DataBinding_Thamchieu()
        {
            txtHoten.DataBindings.Add("EditValue", dtThamchieu, ".Hoten");
            txtChucvu.DataBindings.Add("EditValue", dtThamchieu, ".Chucvu");
            lokQuanhe.DataBindings.Add("EditValue", dtThamchieu, ".Quanhe_Id");
            txtLienhe.DataBindings.Add("EditValue", dtThamchieu, ".Lienhe");
        }

        private void DataBinding_Kinhnghiem()
        {
            dtpNgaylam.DataBindings.Add("EditValue", dtKinhnghiem, ".Ngaylam");
            dtpNgaynghi.DataBindings.Add("EditValue", dtKinhnghiem, ".Ngaynghi");
            txtTen_Congty.DataBindings.Add("EditValue", dtKinhnghiem, ".Ten_Congty");
            lokVitri_Kn.DataBindings.Add("EditValue", dtKinhnghiem, ".Vitri_Id");
            txtDiachi.DataBindings.Add("EditValue", dtKinhnghiem, ".Diachi");
            txtNganhnghe_Kinhdoanh.DataBindings.Add("EditValue", dtKinhnghiem, ".Nganhnghe_Kinhdoanh");
            txtTen_Captren.DataBindings.Add("EditValue", dtKinhnghiem, ".Ten_Captren");
            txtNhiemvu.DataBindings.Add("EditValue", dtKinhnghiem, ".Nhiemvu");
            calLuong.DataBindings.Add("EditValue", dtKinhnghiem, ".Luong");
            txtLydo.DataBindings.Add("EditValue", dtKinhnghiem, ".Lydo");
        }


        private void DataBinding_Vitinh()
        {
            lokTrinhdo_Vt.DataBindings.Add("EditValue", dtVitinh, ".Trinhdo_Id");
            lokVanbang_Vt.DataBindings.Add("EditValue", dtVitinh, ".Vanbang_Id");
            txtNoicap_Vt.DataBindings.Add("EditValue", dtVitinh, ".Noicap");
            txtPhanmemKhac.DataBindings.Add("EditValue", dtVitinh, ".PhanmemKhac");
        }

        private void DataBinding_Ngonngu()
        {
            lokNgonngu.DataBindings.Add("EditValue", dtNgonngu, ".Ngonngu_Id");
            lokTrinhdo.DataBindings.Add("EditValue", dtNgonngu, ".Trinhdo_Id");
            lokVanbang.DataBindings.Add("EditValue", dtNgonngu, ".Vanbang_Id");
            txtNoicap.DataBindings.Add("EditValue", dtNgonngu, ".Noicap");
            txtKynang_Totnhat.DataBindings.Add("EditValue", dtNgonngu, ".Kynang_Totnhat");
            txtKynang_daodoi.DataBindings.Add("EditValue", dtNgonngu, ".Kynang_Traodoi");
        }

        private void DataBinding_Huanluyen()
        {
            txtDonvi.DataBindings.Add("EditValue", dtHuanluyen, ".Donvi");
            txtTen_Khoahoc.DataBindings.Add("EditValue", dtHuanluyen, ".Ten_Khoahoc");
            txtThoigian_Huanluyen.DataBindings.Add("EditValue", dtHuanluyen, ".Thoigian");
            lokChungchi.DataBindings.Add("EditValue", dtHuanluyen, ".Chungchi");
        }

        private void DataBinding_Chuyenmon()
        {
            lokTruong.DataBindings.Add("EditValue", dtChuyenmon, ".Truong_Id");
            lokChuyennganh.DataBindings.Add("EditValue", dtChuyenmon, ".Chuyennganh_Id");
            txtThoigian.DataBindings.Add("EditValue", dtChuyenmon, ".Thoigian");
            lokBangcap.DataBindings.Add("EditValue", dtChuyenmon, ".Bangcap_Id");
        }

        private void DataBinding_Ungvien()
        {
            ClearDataBindings_Ungvien();
            txtMa.DataBindings.Add("EditValue", _dtb, ".Ma");
            lokVitri.DataBindings.Add("EditValue", _dtb, ".Vitri_Id");
            calMucluong.DataBindings.Add("EditValue", _dtb, ".Mucluong");
            dtpNgay_Lamviec.DataBindings.Add("EditValue", _dtb, ".Ngay_Lamviec");
            txtMuctieu.DataBindings.Add("EditValue", _dtb, ".Muctieu");
            txtTen.DataBindings.Add("EditValue", _dtb, ".Ten");
            dtpNgaysinh.DataBindings.Add("EditValue", _dtb, ".Ngaysinh");
            txtNoisinh.DataBindings.Add("EditValue", _dtb, ".Noisinh");
            txtCMND.DataBindings.Add("EditValue", _dtb, ".CMND");
            dtpNgaycap.DataBindings.Add("EditValue", _dtb, ".Ngaycap");
            lokNoicap.DataBindings.Add("EditValue", _dtb, ".Noicap_Id");
            lokQuoctich.DataBindings.Add("EditValue", _dtb, ".Quoctich_Id");
            txtDiachi_lienhe.DataBindings.Add("EditValue", _dtb, ".Diachi_lienhe");
            txtDiachi_Thuongtru.DataBindings.Add("EditValue", _dtb, ".Diachi_Thuongtru");
            txtTel.DataBindings.Add("EditValue", _dtb, ".Tel");
            txtHP.DataBindings.Add("EditValue", _dtb, ".HP");
            txtEmail.DataBindings.Add("EditValue", _dtb, ".Email");
            calChieucao.DataBindings.Add("EditValue", _dtb, ".Chieucao");
            calCannang.DataBindings.Add("EditValue", _dtb, ".Cannang");
            meoSothich.DataBindings.Add("EditValue", _dtb, ".Sothich");
            meoDiemmanh.DataBindings.Add("EditValue", _dtb, ".Diemmanh");
            meoDiemyeu.DataBindings.Add("EditValue", _dtb, ".Diemyeu");
            radHonnhan.DataBindings.Add("EditValue", _dtb, ".Honnhan");
            radGioitinh.DataBindings.Add("EditValue", _dtb, ".Gioitinh");
            txtMuctieu2.DataBindings.Add("EditValue", _dtb, ".Muctieu2");
            meoCacbuoc.DataBindings.Add("EditValue", _dtb, ".Cacbuoc");
            radNhanviec.DataBindings.Add("EditValue", _dtb, ".Nhanviec");
            radLamviec.DataBindings.Add("EditValue", _dtb, ".Lamviec");
            meoKhong_Hailong.DataBindings.Add("EditValue", _dtb, ".Khong_Hailong");
            meoBa_Yeuto_Mongmuon.DataBindings.Add("EditValue", _dtb, ".Ba_Yeuto_Mongmuon");
            meoLydo_Nopdon_Xinviec.DataBindings.Add("EditValue", _dtb, ".Lydo_Nopdon_Xinviec");

            //Kết quả test
            calChuyenmon.DataBindings.Add("EditValue", _dtb, ".Chuyenmon");
            calVitinh.DataBindings.Add("EditValue", _dtb, ".Vitinh");
            calAnhvan.DataBindings.Add("EditValue", _dtb, ".Anhvan");
            calKhac.DataBindings.Add("EditValue", _dtb, ".Khac");
            dtpNgay_Kiemtra.DataBindings.Add("EditValue", _dtb, ".NgayKiemtra");

            //Phê duyệt của tổng giám đốc
            radKetqua.DataBindings.Add("EditValue", _dtb, ".Ketqua");
            radHopdong.DataBindings.Add("EditValue", _dtb, ".Hopdong");
            calLuong_Pd.DataBindings.Add("EditValue", _dtb, ".Luong");
            dtpNgaygoi.DataBindings.Add("EditValue", _dtb, ".Ngaygoi");
            txtHoten_Giamdoc.DataBindings.Add("EditValue", _dtb, ".Hoten_Giamdoc");
            txtChuky_Giamdoc.DataBindings.Add("EditValue", _dtb, ".Chuky_Giamdoc");
            dtpNgay_Pheduyet.DataBindings.Add("EditValue", _dtb, ".Ngay_Pheduyet");
        }
        #endregion

        #region ResetInput OKI
        protected override void ResetInput()
        {
            switch (TabActive)
            {
                case "tabChuyenmon":
                    ResetInput_Chuyenmon();
                    break;

                case "tabHuanluyen":
                    ResetInput_Huanluyen();
                    break;

                case "tabNgonngu":
                    ResetInput_Ngonngu();
                    break;

                case "tabVitinh":
                    ResetInput_Vitinh();
                    break;

                case "tabKinhnghiem":
                    ResetInput_Kinhnghiem();
                    break;

                case "tabThamchieu":
                    ResetInput_Thamchieu();
                    break;

                case "tabPhongvan":
                    ResetInput_Phongvan();
                    break;

                case "tabUngvien":
                    ResetInput_Ungvien();
                    break;
                case "tabKetqua":
                    ResetInput_Ungvien();
                    break;
            }
            base.ResetInput();
        }

        private void ResetInput_Phongvan()
        {
            cbxLoai.EditValue = null;
            txtNguoi_Phongvan.EditValue = null;
            lokVitri_Pv.EditValue = null;
            lokBophan_Pv.EditValue = null;
            meoNhanxet.EditValue = null;
            radKetluan.EditValue = null;

            gcTieuchuan.DataSource = _bllBus.Phongvan_Select_TempTable();
        }

        private void ResetInput_Thamchieu()
        {
            txtHoten.EditValue = null;
            txtChucvu.EditValue = null;
            lokQuanhe.EditValue = null;
            txtLienhe.EditValue = null;
        }

        private void ResetInput_Kinhnghiem()
        {
            dtpNgaylam.EditValue = null;
            dtpNgaynghi.EditValue = null;
            txtTen_Congty.EditValue = null;
            lokVitri_Kn.EditValue = null;
            txtDiachi.EditValue = null;
            txtNganhnghe_Kinhdoanh.EditValue = null;
            txtTen_Captren.EditValue = null;
            txtNhiemvu.EditValue = null;
            calLuong.EditValue = null;
            txtLydo.EditValue = null;
        }

        private void ResetInput_Vitinh()
        {
            lokTrinhdo_Vt.EditValue = null;
            lokVanbang_Vt.EditValue = null;
            txtNoicap_Vt.EditValue = null;
            txtPhanmemKhac.EditValue = null;
        }

        private void ResetInput_Ngonngu()
        {
            lokNgonngu.EditValue = null;
            lokTrinhdo.EditValue = null;
            lokVanbang.EditValue = null;
            txtNoicap.EditValue = null;
            txtKynang_Totnhat.EditValue = null;
            txtKynang_daodoi.EditValue = null;
        }

        private void ResetInput_Huanluyen()
        {
            txtDonvi.Text = null;
            txtTen_Khoahoc.Text = null;
            txtThoigian_Huanluyen.Text = null;
            lokChungchi.EditValue = null;
        }

        private void ResetInput_Chuyenmon()
        {
            lokTruong.EditValue = null;
            lokChuyennganh.EditValue = null;
            txtThoigian.Text = null;
            lokBangcap.EditValue = null;
        }

        private void ResetInput_Ungvien()
        {
            lokVitri.EditValue = null;
            calMucluong.EditValue = null;
            dtpNgay_Lamviec.Text = null;
            txtMuctieu.Text = null;
            txtTen.Text = null;
            dtpNgaysinh.Text = null;
            txtNoisinh.Text = null;
            radGioitinh.SelectedIndex = 0;
            radHonnhan.SelectedIndex = 0;
            txtCMND.Text = null;
            dtpNgaycap.Text = null;
            lokNoicap.EditValue = null;
            lokQuoctich.EditValue = null;
            txtDiachi_lienhe.Text = null;
            txtDiachi_Thuongtru.Text = null;
            txtTel.Text = null;
            txtHP.Text = null;
            txtEmail.Text = null;

            calChieucao.EditValue = 158;
            calCannang.EditValue = 30;

            meoSothich.Text = null;
            meoDiemmanh.Text = null;
            meoDiemyeu.Text = null;

            txtMuctieu2.Text = null;
            meoCacbuoc.Text = null;
            radNhanviec.EditValue = null;
            radLamviec.EditValue = null;
            meoKhong_Hailong.Text = null;
            meoBa_Yeuto_Mongmuon.Text = null;
            meoLydo_Nopdon_Xinviec.Text = null;
            meoBiet_Thongtin.Text = null;
            chkBan.Checked = false;
            chkBao.Checked = false;
            chkWeb.Checked = false;
        }
        #endregion

        #region ReadonlyControl OKI
        protected override void ReadOnlyControl(bool isReadOnly = true)
        {
            switch (TabActive)
            {
                case "tabChuyenmon":
                    ReadOnlyControl_Chuyenmon(isReadOnly);
                    break;

                case "tabHuanluyen":
                    ReadOnlyControl_Huanluyen(isReadOnly);
                    break;

                case "tabNgonngu":
                    ReadOnlyControl_Ngonngu(isReadOnly);
                    break;

                case "tabVitinh":
                    ReadOnlyControl_Vitinh(isReadOnly);
                    break;

                case "tabKinhnghiem":
                    ReadOnlyControl_Kinhnghiem(isReadOnly);
                    break;

                case "tabThamchieu":
                    ReadOnlyControl_Thamchieu(isReadOnly);
                    break;

                case "tabPhongvan":
                    ReadOnlyControl_Phongvan(isReadOnly);
                    break;

                case "tabUngvien":
                    ReadOnlyControl_Ungvien(isReadOnly);
                    break;
                case "tabKetqua":
                    ReadOnlyControl_Ungvien(isReadOnly);
                    break;
            }

            base.ReadOnlyControl(isReadOnly);
        }

        private void ReadOnlyControl_Phongvan(bool isReadOnly = true)
        {
            //txtHoten.Properties.ReadOnly = isReadOnly;
            txtNguoi_Phongvan.Properties.ReadOnly = isReadOnly;
            lokVitri_Pv.Properties.ReadOnly = isReadOnly;
            lokBophan_Pv.Properties.ReadOnly = isReadOnly;
            meoNhanxet.Properties.ReadOnly = isReadOnly;
            radKetluan.Properties.ReadOnly = isReadOnly;
            dtpNgay_Phongvan.Properties.ReadOnly = isReadOnly;

            gcTieuchuan.Enabled = isReadOnly;
        }

        private void ReadOnlyControl_Thamchieu(bool isReadOnly = true)
        {
            txtHoten.Properties.ReadOnly = isReadOnly;
            txtChucvu.Properties.ReadOnly = isReadOnly;
            lokQuanhe.Properties.ReadOnly = isReadOnly;
            txtLienhe.Properties.ReadOnly = isReadOnly;

            gcThamchieu.Enabled = isReadOnly;
        }

        private void ReadOnlyControl_Kinhnghiem(bool isReadOnly = true)
        {
            dtpNgaylam.Properties.ReadOnly = isReadOnly;
            dtpNgaynghi.Properties.ReadOnly = isReadOnly;
            txtTen_Congty.Properties.ReadOnly = isReadOnly;
            lokVitri_Kn.Properties.ReadOnly = isReadOnly;
            txtDiachi.Properties.ReadOnly = isReadOnly;
            txtNganhnghe_Kinhdoanh.Properties.ReadOnly = isReadOnly;
            txtTen_Captren.Properties.ReadOnly = isReadOnly;
            txtNhiemvu.Properties.ReadOnly = isReadOnly;
            calLuong.Properties.ReadOnly = isReadOnly;
            txtLydo.Properties.ReadOnly = isReadOnly;

            gcKinhnghiem.Enabled = isReadOnly;
        }

        private void ReadOnlyControl_Vitinh(bool isReadOnly = true)
        {
            lokTrinhdo_Vt.Properties.ReadOnly = isReadOnly;
            lokVanbang_Vt.Properties.ReadOnly = isReadOnly;
            txtNoicap_Vt.Properties.ReadOnly = isReadOnly;
            txtPhanmemKhac.Properties.ReadOnly = isReadOnly;

            gcVitinh.Enabled = isReadOnly;
        }

        private void ReadOnlyControl_Ngonngu(bool isReadOnly = true)
        {
            lokNgonngu.Properties.ReadOnly = isReadOnly;
            lokTrinhdo.Properties.ReadOnly = isReadOnly;
            lokVanbang.Properties.ReadOnly = isReadOnly;
            txtNoicap.Properties.ReadOnly = isReadOnly;
            txtKynang_Totnhat.Properties.ReadOnly = isReadOnly;
            txtKynang_daodoi.Properties.ReadOnly = isReadOnly;

            gcNgonngu.Enabled = isReadOnly;
        }

        private void ReadOnlyControl_Huanluyen(bool isReadOnly = true)
        {
            txtDonvi.Properties.ReadOnly = isReadOnly;
            txtTen_Khoahoc.Properties.ReadOnly = isReadOnly;
            txtThoigian_Huanluyen.Properties.ReadOnly = isReadOnly;
            lokChungchi.Properties.ReadOnly = isReadOnly;

            gcHuanluyen.Enabled = isReadOnly;
        }

        private void ReadOnlyControl_Chuyenmon(bool isReadOnly = true)
        {
            lokTruong.Properties.ReadOnly = isReadOnly;
            lokChuyennganh.Properties.ReadOnly = isReadOnly;
            txtThoigian.Properties.ReadOnly = isReadOnly;
            lokBangcap.Properties.ReadOnly = isReadOnly;

            gcChuyenmon.Enabled = isReadOnly;
        }

        private void ReadOnlyControl_Ungvien(bool isReadOnly = true)
        {
            lokVitri.Properties.ReadOnly = isReadOnly;
            calMucluong.Properties.ReadOnly = isReadOnly;
            dtpNgay_Lamviec.Properties.ReadOnly = isReadOnly;
            txtMuctieu.Properties.ReadOnly = isReadOnly;
            txtTen.Properties.ReadOnly = isReadOnly;
            dtpNgaysinh.Properties.ReadOnly = isReadOnly;
            txtNoisinh.Properties.ReadOnly = isReadOnly;
            radGioitinh.Properties.ReadOnly = isReadOnly;
            txtCMND.Properties.ReadOnly = isReadOnly;
            dtpNgaycap.Properties.ReadOnly = isReadOnly;
            lokNoicap.Properties.ReadOnly = isReadOnly;
            lokQuoctich.Properties.ReadOnly = isReadOnly;
            txtDiachi_lienhe.Properties.ReadOnly = isReadOnly;
            txtDiachi_Thuongtru.Properties.ReadOnly = isReadOnly;
            txtTel.Properties.ReadOnly = isReadOnly;
            txtHP.Properties.ReadOnly = isReadOnly;
            txtEmail.Properties.ReadOnly = isReadOnly;
            calChieucao.Properties.ReadOnly = isReadOnly;
            calCannang.Properties.ReadOnly = isReadOnly;
            radHonnhan.Properties.ReadOnly = isReadOnly;
            meoSothich.Properties.ReadOnly = isReadOnly;
            meoDiemmanh.Properties.ReadOnly = isReadOnly;
            meoDiemyeu.Properties.ReadOnly = isReadOnly;
            txtMuctieu2.Properties.ReadOnly = isReadOnly;
            meoCacbuoc.Properties.ReadOnly = isReadOnly;
            radNhanviec.Properties.ReadOnly = isReadOnly;
            radLamviec.Properties.ReadOnly = isReadOnly;
            meoKhong_Hailong.Properties.ReadOnly = isReadOnly;
            meoBa_Yeuto_Mongmuon.Properties.ReadOnly = isReadOnly;
            meoLydo_Nopdon_Xinviec.Properties.ReadOnly = isReadOnly;
            meoBiet_Thongtin.Properties.ReadOnly = isReadOnly;
            chkBan.Properties.ReadOnly = isReadOnly;
            chkWeb.Properties.ReadOnly = isReadOnly;
            chkBao.Properties.ReadOnly = isReadOnly;

            //Kết quả test
            calChuyenmon.Properties.ReadOnly = isReadOnly;
            calVitinh.Properties.ReadOnly = isReadOnly;
            calAnhvan.Properties.ReadOnly = isReadOnly;
            calKhac.Properties.ReadOnly = isReadOnly;
            dtpNgay_Kiemtra.Properties.ReadOnly = isReadOnly;

            //Phê duyệt của tổng giám đốc
            dtpNgay_Pheduyet.Properties.ReadOnly = isReadOnly;
            radKetqua.Properties.ReadOnly = isReadOnly;
            radHopdong.Properties.ReadOnly = isReadOnly;
            calLuong_Pd.Properties.ReadOnly = isReadOnly;
            dtpNgaygoi.Properties.ReadOnly = isReadOnly;
            txtHoten_Giamdoc.Properties.ReadOnly = isReadOnly;
            txtChuky_Giamdoc.Properties.ReadOnly = isReadOnly;

            gcUngvien.Enabled = isReadOnly;
        }
        #endregion

        #region ValidInput OKI
        protected override bool ValidInput()
        {
            switch (TabActive)
            {
                case "tabChuyenmon":
                    return ValidInput_Chuyenmon();

                case "tabHuanluyen":
                    return ValidInput_Huanluyen();

                case "tabNgonngu":
                    return ValidInput_Ngonngu();

                case "tabVitinh":
                    return ValidInput_Vitinh();

                case "tabKinhnghiem":
                    return ValidInput_Kinhnghiem();

                case "tabThamchieu":
                    return ValidInput_Thamchieu();

                case "tabPhongvan":
                    return ValidInput_Phongvan();

                case "tabUngvien":
                    return ValidInput_Ungvien();
                default:
                    return ValidInput_Ketqua();
            }
        }

        private bool ValidInput_Phongvan()
        {
            //aaaaaaaaa
            return true;
        }

        private bool ValidInput_Thamchieu()
        {
            if (txtHoten.EditValue == null) { XtraMessageBox.Show("Chưa nhập tên người quen của ứng viên trong công ty.", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); txtHoten.Focus(); return false; }
            if (lokQuanhe.EditValue == null) { XtraMessageBox.Show("Chưa chọn mối quan hệ.", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); lokQuanhe.Focus(); return false; }
            return true;
        }

        private bool ValidInput_Kinhnghiem()
        {
            if (dtpNgaylam.EditValue == null) { XtraMessageBox.Show("Chưa chọn bắt đầu làm trước đây", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); dtpNgaylam.Focus(); return false; }
            if (DateTime.Compare(DateTime.Today, Convert.ToDateTime(dtpNgaylam.EditValue)) < 0) { /*Ngày làm phải nhỏ hơn ngày hôm nay*/XtraMessageBox.Show("Ngày làm phải trước ngày hôm nay.", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); dtpNgaylam.Focus(); return false; }

            if (dtpNgaynghi.EditValue == null) { XtraMessageBox.Show("Chưa chọn ngày nghỉ trước đây", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); dtpNgaynghi.Focus(); return false; }
            if (DateTime.Compare(Convert.ToDateTime(dtpNgaylam.EditValue), Convert.ToDateTime(dtpNgaynghi.EditValue)) >= 0) { /*Ngày làm phải trước ngày nghỉ*/XtraMessageBox.Show("Ngày làm phải trước ngày nghỉ.", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); dtpNgaynghi.Focus(); return false; }

            if (txtTen_Congty.EditValue == null) { XtraMessageBox.Show("Chưa nhập tên công ty mà ứng viên đã từng làm.", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); txtTen_Congty.Focus(); return false; }

            if (txtDiachi.EditValue == null) { XtraMessageBox.Show("Chưa nhập địa chỉ công ty mà ứng viên đã từng làm.", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); txtDiachi.Focus(); return false; }

            return true;
        }

        private bool ValidInput_Vitinh()
        {
            if (lokTrinhdo_Vt.EditValue == null) { XtraMessageBox.Show("Chưa chọn trình độ vi tính", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); lokTrinhdo_Vt.Focus(); return false; }
            if (lokVanbang_Vt.EditValue == null) { XtraMessageBox.Show("Chưa chọn văn bằng vi tính", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); lokVanbang_Vt.Focus(); return false; }
            return true;
        }

        private bool ValidInput_Ngonngu()
        {
            if (lokNgonngu.EditValue == null) { XtraMessageBox.Show("Chưa chọn ngôn ngữ", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); lokNgonngu.Focus(); return false; }
            if (lokTrinhdo.EditValue == null) { XtraMessageBox.Show("Chưa chọn trình độ", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); lokTrinhdo.Focus(); return false; }
            if (lokVanbang.EditValue == null) { XtraMessageBox.Show("Chưa chọn văn bằng", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); lokVanbang.Focus(); return false; }
            if (lokVitri.EditValue == null) { XtraMessageBox.Show("Chưa chọn vị trí", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); lokVitri.Focus(); return false; }
            if (txtNoicap.EditValue == null) { XtraMessageBox.Show("Chưa chọn nơi cấp", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); txtNoicap.Focus(); return false; }
            return true;
        }

        private bool ValidInput_Huanluyen()
        {
            if (txtDonvi.Text == null){XtraMessageBox.Show("Chưa nhập đơn vị đào tạo", "Lổi nhập liệu", MessageBoxButtons.OK, MessageBoxIcon.Stop); txtDonvi.Focus();return false;}
            if (txtTen_Khoahoc.Text == null){XtraMessageBox.Show("Chưa nhập tên khóa học", "Lổi nhập liệu", MessageBoxButtons.OK, MessageBoxIcon.Stop);txtTen_Khoahoc.Focus();return false;}
            if (txtThoigian_Huanluyen.Text == ""){XtraMessageBox.Show("Chưa nhập thời gian học của khóa huấn luyện", "Lổi nhập liệu", MessageBoxButtons.OK, MessageBoxIcon.Stop);txtThoigian_Huanluyen.Focus();return false;}
            if (lokChungchi.EditValue == null){XtraMessageBox.Show("Chưa chọn chứng chỉ", "Lổi nhập liệu", MessageBoxButtons.OK, MessageBoxIcon.Stop);lokChungchi.Focus();return false;}
            return true;
        }

        private bool ValidInput_Chuyenmon()
        {
            if (lokTruong.EditValue == null){XtraMessageBox.Show("Chưa chọn trường đào tạo", "Lổi nhập liệu", MessageBoxButtons.OK, MessageBoxIcon.Stop);lokTruong.Focus();return false;}
            if (lokChuyennganh.EditValue == null){XtraMessageBox.Show("Chưa chọn chuyện ngành", "Lổi nhập liệu", MessageBoxButtons.OK, MessageBoxIcon.Stop);lokChuyennganh.Focus();return false;}
            if (txtThoigian.Text == ""){XtraMessageBox.Show("Chưa nhập thời gian đào tạo", "Lổi nhập liệu", MessageBoxButtons.OK, MessageBoxIcon.Stop);txtThoigian.Focus();return false;}
            if (lokBangcap.EditValue == null){XtraMessageBox.Show("Chưa chọn bằng cấp", "Lổi nhập liệu", MessageBoxButtons.OK, MessageBoxIcon.Stop); lokBangcap.Focus();return false;}
            return true;
        }

        private bool ValidInput_Ungvien()
        {
            if (lokVitri.EditValue == null) { XtraMessageBox.Show("Chưa chọn vị trí", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); lokVitri.Focus(); return false; }

            if (calMucluong.EditValue == null) { XtraMessageBox.Show("Chưa nhập mức lương mông muốn", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); calMucluong.Focus(); return false; }

            if (dtpNgay_Lamviec.EditValue == null) { XtraMessageBox.Show("Chưa chọn ngày bắt đầu làm việc", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); dtpNgay_Lamviec.Focus(); return false; }
            if (DateTime.Compare(DateTime.Today, Convert.ToDateTime(dtpNgay_Lamviec.EditValue)) >= 0) { /*Ngày ngày làm việc phải sau ngày hiện tại*/XtraMessageBox.Show("Ngày ngày làm việc phải sau ngày hiện tại", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); dtpNgay_Lamviec.Focus(); return false; }

            if (txtTen.Text.Trim() == "") { XtraMessageBox.Show("Chưa nhập tên ứng viên", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); txtTen.Focus(); return false; }

            if (dtpNgaysinh.EditValue == null) { XtraMessageBox.Show("Chưa nhập ngày sinh", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); dtpNgaysinh.Focus(); return false; }
            if (DateTime.Today.Year-Convert.ToDateTime(dtpNgaysinh.EditValue).Year<18) { /*Tuổi không được nhỏ hơn 18*/XtraMessageBox.Show("Ứng viên có tuổi phải từ 18 trở lên", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); dtpNgaysinh.Focus(); return false; }

            if (txtCMND.EditValue == null) { XtraMessageBox.Show("Chưa nhập CMND", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); txtCMND.Focus(); return false; }

            if (dtpNgaycap.EditValue == null) { XtraMessageBox.Show("Chưa nhập ngày cấp của CMND", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); dtpNgaycap.Focus(); return false; }
            if (DateTime.Compare(DateTime.Today, Convert.ToDateTime(dtpNgaycap.EditValue)) < 0) { /*Ngày cấp nhỏ hơn ngày hôm nay*/XtraMessageBox.Show("Ngày cấp của CMND phải trước ngày hôm nay.", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); dtpNgaycap.Focus(); return false; }

            if (lokNoicap.EditValue == null) { XtraMessageBox.Show("Chưa chọn nơi cấp", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); lokNoicap.Focus(); return false; }

            if (lokQuoctich.EditValue == null) { XtraMessageBox.Show("Chưa chọn quốc tịch", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); lokQuoctich.Focus(); return false; }

            if (txtDiachi_Thuongtru.EditValue == null) { XtraMessageBox.Show("Chưa nhập địa chỉ thường trú", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); txtDiachi_Thuongtru.Focus(); return false; }

            if (txtDiachi_Thuongtru.EditValue == null) { XtraMessageBox.Show("Chưa nhập địa chỉ thường trú", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); txtDiachi_Thuongtru.Focus(); return false; }

            if (txtTel.Text.Substring(0, 1) == "0" && txtTel.Text.Substring(1, 1) == "9" && txtTel.Text.Trim().Length == 10) { }
            else
            {
                if (txtTel.Text.Substring(0, 1) == "0" && txtTel.Text.Substring(1, 1) == "1" && txtTel.Text.Trim().Length == 11) { }
                else
                {
                    { XtraMessageBox.Show("Số điện thoại không đúng", STR_INFO, MessageBoxButtons.OK, MessageBoxIcon.Stop); txtTel.Focus(); return false; }
                }
            }
            return true;
        }

        private bool ValidInput_Ketqua()
        {
            return true;
        }

        #endregion

        private void tabMain_SelectedPageChanged(object sender, DevExpress.XtraTab.TabPageChangedEventArgs e)
        {
            switch (e.Page.Name)
            {
                case "tabChuyenmon":
                    TabActive = "tabChuyenmon";
                    break;
                case "tabHuanluyen":
                    TabActive = "tabHuanluyen";
                    break;
                case "tabNgonngu":
                    TabActive = "tabNgonngu";
                    break;
                case "tabVitinh":
                    TabActive = "tabVitinh";
                    break;
                case "tabKinhnghiem":
                    TabActive = "tabKinhnghiem";
                    break;
                case "tabThongtinBosung":
                    TabActive = "tabThongtinBosung";
                    break;
                case "tabThamchieu":
                    TabActive = "tabThamchieu";
                    break;
                case "tabPhongvan":
                    TabActive = "tabPhongvan";
                    break;
                case "tabUngvien":
                    TabActive = "tabUngvien";
                    break;
                case "tabKetqua":
                    TabActive = "tabKetqua";
                    break;
            }
            LoadData();
            ReadOnlyControl();
            ChangeStatus();
            gcUngvien.Enabled = true;
        }

        private void FrmUngvien_Load(object sender, EventArgs e)
        {
            //Ứng viên
            lokVitri.Properties.DataSource = _bllCat.Danhmuc_Select_Loai("Vitri");
            lokNoicap.Properties.DataSource = _bllCat.Danhmuc_Select_Loai("Tinh");
            lokQuoctich.Properties.DataSource = _bllCat.Danhmuc_Select_Loai("Quocgia");

            //Chuyên môn
            lokTruong.Properties.DataSource = _bllCat.Danhmuc_Select_Loai("Truong");
            lokChuyennganh.Properties.DataSource = _bllCat.Danhmuc_Select_Loai("Chuyennganh");
            lokBangcap.Properties.DataSource = _bllCat.Danhmuc_Select_Loai("Bangcap");

            //Huấn luyện
            lokChungchi.Properties.DataSource = _bllCat.Danhmuc_Select_Loai("Vanbang");

            //Ngôn ngữ
            lokNgonngu.Properties.DataSource = _bllCat.Danhmuc_Select_Loai("Ngonngu");
            lokTrinhdo.Properties.DataSource = _bllCat.Danhmuc_Select_Loai("Trinhdo");
            lokVanbang.Properties.DataSource = _bllCat.Danhmuc_Select_Loai("Vanbang");

            //Vi tính
            lokTrinhdo_Vt.Properties.DataSource = _bllCat.Danhmuc_Select_Loai("Trinhdo");
            lokVanbang_Vt.Properties.DataSource = _bllCat.Danhmuc_Select_Loai("Vanbang");

            //Kinh nghiệm
            lokVitri_Kn.Properties.DataSource = _bllCat.Danhmuc_Select_Loai("Vitri");

            //Tham chiếu
            lokQuanhe.Properties.DataSource = _bllCat.Danhmuc_Select_Loai("Quanhe");

            //Phỏng vấn
            lokVitri_Pv.Properties.DataSource = _bllCat.Danhmuc_Select_Loai("Vitri");
            lokBophan_Pv.Properties.DataSource = _bllCat.Danhmuc_Select_Loai("Bophan");
        }

        private void gvUngvien_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            try
            {
                Id = (Guid)gvUngvien.GetFocusedRowCellValue("Id");
                if (Id != Guid.Empty)
                {
                    if (TabActive != "tabUngvien")
                    {
                        if (TabActive != "tabKetqua")
                        {
                            LoadData();
                        }
                    }
                }
                else
                {
                    ResetInput();
                    ClearDataBindings();
                    switch (TabActive)
                    {
                        case "tabChuyenmon":
                            gcChuyenmon.DataSource = null;
                            break;

                        case "tabHuanluyen":
                            gcHuanluyen.DataSource = null;
                            break;

                        case "tabNgonngu":
                            gcNgonngu.DataSource = null;
                            break;

                        case "tabVitinh":
                            gcVitinh.DataSource = null;
                            break;

                        case "tabKinhnghiem":
                            gcKinhnghiem.DataSource = null;
                            break;

                        case "tabThamchieu":
                            gcThamchieu.DataSource = null;
                            break;

                        case "tabPhongvan":
                            //gcPhongvan.DataSource = null;
                            break;

                        case "tabUngvien":
                            break;
                    }
                }
                Biet_Thongtin_Binding();
            }
            catch (Exception)
            {
                //XtraMessageBox.Show("Chưa chọn ứng viên", "Chọn ứng viên", MessageBoxButtons.OK);
            }
        }

        bool Exception_Load = false;
        private void cbxLoai_SelectedIndexChanged(object sender, EventArgs e)
        {
            //if (Exception_Load) Exception_Load = true;
            //LoadData_Phongvan();
        }

        private void Biet_Thongtin_Binding()
        {
            string chk0 = gvUngvien.GetFocusedRowCellValue("Biet_Thongtin").ToString();
            if (chk0.Length >= 3)
            {
                string chk = gvUngvien.GetFocusedRowCellValue("Biet_Thongtin").ToString().Substring(0, 3);
                if (chk.ToInt32() > 0)
                {
                    if (chk[0] == '0') chkBan.Checked = false;
                    else chkBan.Checked = true;

                    if (chk[1] == '0') chkBao.Checked = false;
                    else chkBao.Checked = true;

                    if (chk[2] == '0') chkWeb.Checked = false;
                    else chkWeb.Checked = true;

                    meoBiet_Thongtin.Text = gvUngvien.GetFocusedRowCellValue("Biet_Thongtin").ToString().Substring(2);
                }
                else
                {
                    chkBan.Checked = false;
                    chkBao.Checked = false;
                    chkWeb.Checked = false;
                    gvUngvien.GetFocusedRowCellValue("Biet_Thongtin").ToString();
                }
            }
            else
            {
                chkBan.Checked = false;
                chkBao.Checked = false;
                chkWeb.Checked = false;
                gvUngvien.GetFocusedRowCellValue("Biet_Thongtin").ToString();
            }
        }

        #region Constants
        private const string STR_TITLE = "Ứng viên";
        private const string STR_ADD = "Thêm " + STR_TITLE;
        private const string STR_EDIT = "Sửa " + STR_TITLE;
        private const string STR_DELETE = "Xoá " + STR_TITLE;

        private const string STR_INFO = "Thông báo nhập liệu";

        private const string STR_SELECT = "Chọn dữ liệu!";
        private const string STR_CONFIRM = "Tất cả dữ liệu liên quan sẽ bị xóa hoàn toàn khỏi hệ thống\nCó xoá '{0}' không?";
        private const string STR_UNDELETE = "Không xoá được!\nDữ liệu đang được sử dụng.";
        private const string STR_DUPLICATE = "Vị trí này có rồi";

        //private const string STR_AGE = "Phải 18 tuổi trở lên!";
        //private const string STR_PASS = "Mật khẩu 6 kí tự trở lên!";

        private const string STR_CHOICE = "CHỌN DÒNG CẦN XOÁ";
        private const string STR_CHOICE_E = "CHỌN DÒNG CẦN SỬA\n\r HOẶC KHÔNG ĐƯỢC CHỌN NHÓM ĐỂ SỬA";
        #endregion
    }
}
